const express = require('express');
const path = require('path');
const app = express();
const PORT = process.env.PORT || 3000;

// 中间件
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(express.static(__dirname));

// 模拟用户数据库
const users = [
    { id: 1, username: 'admin', password: 'admin123', role: 'admin', name: '系统管理员' },
    { id: 2, username: 'superadmin', password: 'super123', role: 'superadmin', name: '超级管理员' },
    { id: 3, username: 'test', password: 'test123', role: 'user', name: '测试用户' }
];

// 登录接口
app.post('/api/login', (req, res) => {
    const { username, password } = req.body;
    
    // 验证输入
    if (!username || !password) {
        return res.status(400).json({
            success: false,
            message: '用户名和密码不能为空'
        });
    }

    // 查找用户
    const user = users.find(u => u.username === username && u.password === password);
    
    if (user) {
        // 登录成功
        const { password: _, ...userInfo } = user; // 移除密码
        res.json({
            success: true,
            message: '登录成功',
            user: userInfo,
            token: 'mock-jwt-token-' + Date.now()
        });
    } else {
        // 登录失败
        res.status(401).json({
            success: false,
            message: '用户名或密码错误'
        });
    }
});

// 验证token接口
app.post('/api/verify', (req, res) => {
    const { token } = req.body;
    
    if (token && token.startsWith('mock-jwt-token-')) {
        res.json({
            success: true,
            message: 'Token有效'
        });
    } else {
        res.status(401).json({
            success: false,
            message: 'Token无效'
        });
    }
});

// 获取用户信息
app.get('/api/user/info', (req, res) => {
    // 这里应该从token中获取用户信息，这里简化处理
    res.json({
        success: true,
        data: {
            username: 'admin',
            role: 'admin',
            name: '系统管理员'
        }
    });
});

// 获取统计数据
app.get('/api/stats', (req, res) => {
    res.json({
        success: true,
        data: {
            totalUsers: 1234,
            onlineUsers: 89,
            todayVisits: 456,
            systemStatus: '正常'
        }
    });
});

// 路由处理
app.get('/', (req, res) => {
    res.sendFile(path.join(__dirname, 'index.html'));
});

app.get('/dashboard', (req, res) => {
    res.sendFile(path.join(__dirname, 'dashboard.html'));
});

// 处理所有其他路由，返回index.html（用于SPA）
app.get('*', (req, res) => {
    res.sendFile(path.join(__dirname, 'index.html'));
});

// 错误处理中间件
app.use((err, req, res, next) => {
    console.error(err.stack);
    res.status(500).json({
        success: false,
        message: '服务器内部错误'
    });
});

// 启动服务器
app.listen(PORT, () => {
    console.log(`服务器运行在 http://localhost:${PORT}`);
    console.log('可用的测试账号：');
    console.log('- 用户名: admin, 密码: admin123');
    console.log('- 用户名: superadmin, 密码: super123');
    console.log('- 用户名: test, 密码: test123');
});

// 导出给测试使用
module.exports = app;
